import MsSetFrameSyncNotify = MVS.MsSetFrameSyncNotify;

export interface IRegisterUser {
    registerUserResponse(userInfo: MsRegistRsp);
}

export interface ILogin {
    loginResponse(login: MsLoginRsp);
}

export interface ILogout {
    logoutResponse(status: number);
}

export interface IReconnect {
    reconnectResponse(status: number, roomUserInfoList: Array<MsRoomUserInfo>, roomInfo: MsRoomInfo);
}

export interface IError {
    errorResponse(errCode: number, errMsg: string);
}

export interface IJoinRoom {
    joinRoomResponse(status: number, roomUserInfoList: Array<MsRoomUserInfo>, roomInfo: MsRoomInfo);

    joinRoomNotify(roomUserInfo: MsRoomUserInfo);
}

export interface ILeaveRoom {
    leaveRoomResponse(rsp: MsLeaveRoomRsp);

    leaveRoomNotify(leaveRoomInfo: MsLeaveRoomNotify);
}

export interface IJoinOver {
    joinOverResponse(rsp: MsJoinOverRsp);

    joinOverNotify(notifyInfo: MsJoinOverNotifyInfo);
}

export interface ISendEvent {
    sendEventResponse(rsp: MsSendEventRsp);

    sendEventNotify(eventInfo: MsSendEventNotify);
}

export interface IKickPlayer {
    kickPlayerResponse(rsp: MsKickPlayerRsp);

    kickPlayerNotify(knotify: MsKickPlayerNotify);
}

export interface IJoinOpen {
    joinOpenResponse(data: MsReopenRoomResponse);

    joinOpenNotify(data: MsReopenRoomNotify);
}

export interface IRoomList {
    getRoomListExResponse(rsp: MsGetRoomListExRsp);
}

export interface IRoomDetail {
    getRoomDetailResponse(rsp: MsGetRoomDetailRsp);
}

export interface ICreateRoom {
    crateRoomResponse(rsp: MsCreateRoomRsp);
}

export interface ISetRoomProperty {
    setRoomPropertyResponse(rsp: MsSetRoomPropertyRspInfo);

    setRoomPropertyNotify(notify: MsRoomPropertyNotifyInfo);
}

export interface INetworkStateNotify {
    networkStateNotify(netnotify: MsNetworkStateNotify);
}

export interface ISubEventGroup {
    subscribeEventGroupResponse(status: number, groups: Array<string>);
}

export interface IFrameUpdate {
    frameUpdate(frameRate: number, enableGS?: number, other?: any);
}

export interface ISetFrameSync {
    setFrameSyncResponse(rsp: MsSetChannelFrameSyncRsp);

    setFrameSyncNotify(rsp: MsSetFrameSyncNotify);
}

export interface ISendFrameEvent {
    sendFrameEventResponse(rsp: MsSendFrameEventRsp);
}

export interface ISendEventGroup {
    sendEventGroupResponse(groups: Array<string>, data: string);

    sendEventGroupNotify(srcUid: number, groups: Array<string>, cpProto: string);
}

export interface IOfflineData {
    getOffLineDataResponse(resp: any);
}

export interface ICancelTeamMatch {
    cancelTeamMatchResponse(rsp: { status: number });

    cancelTeamMatchNotify(notify: { userID: number, teamID: string, data: string });
}